const fs = require('node:fs')
const path = require('node:path')
const tma = require('tt-ide-cli')

async function upload() {
  try {
    // 检查package目录
    const packageJsonPath = path.join(__dirname, './package.json')
    if (!fs.existsSync(packageJsonPath)) {
      throw new Error(`package.json文件不存在：${packageJsonPath}，请检查！`)
    }
    const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf8')
    const packageJson = JSON.parse(packageJsonContent)

    // 检查打包配置目录
    const configJsonPath = path.join(__dirname, './src/toutiao.config.json')
    if (!fs.existsSync(configJsonPath)) {
      throw new Error(`toutiao.config.json文件不存在：${configJsonPath}，请检查！`)
    }
    const configJsonContent = fs.readFileSync(configJsonPath, 'utf8')
    const configJson = JSON.parse(configJsonContent)

    // 检查构建目录
    const projectPath = path.join(__dirname, './dist/build/mp-toutiao')
    if (!fs.existsSync(projectPath)) {
      throw new Error(`构建目录不存在：${projectPath}，请先执行构建命令！`)
    }

    console.log(`***********************${configJson.name}抖音小程序开始上传***********************`)

    // 初始化配置（设置小程序代码上传密钥 token）
    tma.setAppConfig({
      appid: configJson.appid,
      config: {
        token: configJson.token,
      },
    })

    // 执行上传
    await tma.upload({
      project: {
        path: projectPath,
      },
      version: packageJson.version,
      changeLog: '更新版本',
      needUploadSourcemap: true,
    })

    console.log(`${configJson.name}抖音小程序上传成功`)
    process.exit(0)
  }
  catch (error) {
    console.log(`抖音小程序上传失败:`, error)
    process.exit(1)
  }
}

upload()
